﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BUGCOME.Model.Auth.dto
{
    /// <summary>
    /// 用户注册数据传输对象，用于封装用户注册请求参数
    /// </summary>
    public class RegisterDto
    {
        /// <summary>
        /// 用户类型（注册账号的类型）这里只需要显示 2, 3, 4 默认是2
        /// 0: 用户基础表
        /// 1: 个人用户表
        /// 2: 系统用户
        /// 3：团队用户
        /// 4：团队成员表  
        /// </summary>
        [Required(ErrorMessage = "请选择用户类型")]
        public string UserType { get; set; }

        /// <summary>
        /// 用户名（注册账号，需为中国大陆手机号）
        /// 格式要求：11位数字，以13/14/15/16/17/18/19开头
        /// </summary>
        [Required(ErrorMessage = "手机号不能为空")]
        [RegularExpression("^(13[0-9]|14[5-9]|15[0-3,5-9]|16[2,5,6,7]|17[0-8]|18[0-9]|19[1,8,9])\\d{8}$", ErrorMessage = "手机号格式不正确")]
        public string Username { get; set; }

        /// <summary>
        /// 用户密码（注册密码）
        /// 格式要求：8-16位，包含大小写字母、数字和特殊符号
        /// </summary>
        [Required(ErrorMessage = "密码不能为空")]
        [RegularExpression("^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[!@#$%^&*(),.?\":{}|<>])[A-Za-z\\d!@#$%^&*(),.?\":{}|<>]{8,16}$", ErrorMessage = "用户密码由8-16位大小写字母、数字、符号组合")]
        public string Password { get; set; }

        /// <summary>
        /// 确认密码（需与密码一致）
        /// </summary>
        [Required(ErrorMessage = "确认密码不能为空")]
        public string ConfirmPassword { get; set; }

        /// <summary>
        /// 图形验证码（防止机器人注册）
        /// </summary>
        public string Code { get; set; }

        /// <summary>
        /// 唯一标识（关联图形验证码会话）
        /// </summary>
        public string Uuid { get; set; } = "";

        /// <summary>
        /// 头像URL（可选，用户上传的头像地址）
        /// </summary>
        public string Photo { get; set; }

        /// <summary>
        /// 注册IP地址（记录注册设备的IP）
        /// </summary>
        public string UserIP { get; set; }
    }
}
